package main.pmc;

import cn.hutool.core.io.FileUtil;
import cn.hutool.db.Db;
import cn.hutool.db.Entity;

import java.io.File;
import java.sql.SQLException;
import java.util.List;

/**
 * @Author: 葛成瑞
 * @Date: 2025/3/5 16:49
 */
public class LocalPmcFileCheck {
    public static void main(String[] args) throws SQLException {
        //本地pmc 文件校验
        // 先删除目录下文件大小是0的文件或者小于2K的文件
        // 目前发现小文件页数正常的无法准确删除 目前设置删除是0的
        // 第二步 进行判断已经下载的 数量全不全
        String rootPath = "F:\\pmcdownextra\\";
//        String Path = "F:\\gcr";
        Db use = Db.use();
        List<Entity> query = use.query("select * from pmcdown where down = 2");
        for (Entity entity : query) {
            Integer pmid = entity.getInt("pmid");
            String secondPath = "/" + pmid / 50000 + 1 + "/";
            String sen = rootPath + secondPath + pmid + "\\";
            List<File> files = FileUtil.loopFiles(sen);
            boolean isdel = false;
            for (File file : files) {
                if (file.isFile()) {
                    if (isCheckDownType(file.getName().toLowerCase())) {
                        if (file.length() == 0) {
                            if (!file.getParentFile().getPath().contains("__MACOSX")) {
                                try {
                                    isdel = true;
                                    System.out.println(file.getAbsolutePath());
                                    FileUtil.del(file);
                                }catch (Exception e){

                                }


//                            System.out.println(file.getAbsolutePath());
                            }
                        }
                    }
                }
            }
            if (isdel) {
                entity.set("del", 1);
                use.insertOrUpdate(entity, "pmid");
            }
        }
    }

    public static boolean isCheckDownType(String fileName) {
        if (fileName.endsWith(".pdf") || fileName.endsWith(".doc") || fileName.endsWith(".zip") || fileName.endsWith(".rar") || fileName.endsWith(".docx")) {
            return true;
        } else {
            return false;
        }
    }
}
